import os
import sys
from django.utils import timezone

# 添加Django项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 设置Django设置模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cdn_preheat.settings')

# 初始化Django应用
import django
django.setup()

# 导入必要的模型
from preheat.models import ManualPreheat, Server, RequestUrl

print('创建测试预热任务...')

# 获取第一个服务器和第一个请求URL
try:
    server = Server.objects.first()
    request_url = RequestUrl.objects.first()
    
    if not server or not request_url:
        print('警告：未找到服务器或请求URL，需要先创建这些对象。')
        print('创建示例服务器...')
        server = Server.objects.create(
            name='测试服务器',
            ip='127.0.0.1',
            ssh_port=22,
            username='root',
            password='password',
            remark='测试用服务器'
        )
        print(f'创建服务器成功: {server.name} ({server.ip})')
        
        print('创建示例请求URL...')
        request_url = RequestUrl.objects.create(
            url='https://example.com/test.jpg',
            description='测试图片',
        )
        print(f'创建请求URL成功: {request_url.url}')
    
    # 创建新的预热任务
    preheat_task = ManualPreheat.objects.create(
        name='测试预热任务 - ' + timezone.now().strftime('%Y%m%d%H%M%S'),
        description='这是一个用于测试预热功能的任务',
        status='waiting'
    )
    
    # 添加服务器和请求URL到任务
    preheat_task.servers.add(server)
    preheat_task.request_urls.add(request_url)
    
    print(f'创建预热任务成功！任务ID: {preheat_task.id}')
    print(f'任务名称: {preheat_task.name}')
    print(f'任务状态: {preheat_task.status}')
    print(f'关联服务器: {server.name} ({server.ip})')
    print(f'关联URL: {request_url.url}')
    print('\n请查看日志文件 cdn_preheat.log 来观察任务执行情况。')
    print('\n任务状态页面URL:')
    print(f'http://localhost:8000/manual-preheat/{preheat_task.id}/status/')
except Exception as e:
    print(f'创建预热任务失败: {str(e)}')
    import traceback
    traceback.print_exc()